package com.lhkj.ct.meta.modules.gauge.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lhkj.ct.base.model.Option;
import com.lhkj.ct.base.model.dto.PageQuery;
import com.lhkj.ct.base.mybatis.extension.service.BatchHandleService;
import com.lhkj.ct.base.mybatis.extension.service.IPageService;
import com.lhkj.ct.meta.modules.gauge.model.entity.TblScale;
import com.lhkj.ct.meta.modules.gauge.model.vo.ScalePageVo;

import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *      服务类
 * </p>
 *
 * @author jobob
 * @since 2023-10-08
 */
public interface ScaleConfigService extends BatchHandleService<TblScale>, IPageService<TblScale> {

    /**
     * 量表配置分页列表
     *
     * @param  pageQuery 分页查询对象
     */
    IPage<ScalePageVo> selectScalePage(TblScale tblScale, PageQuery pageQuery);

    /**
     * 量表配置分页列表
     *
     * @param  pageQuery 分页查询对象
     */
    IPage<TblScale> selectServicePage(TblScale tblScale, PageQuery pageQuery);

    /**
     * 量表配置分页列表
     *
     * @param  pageQuery 分页查询对象
     */
    IPage<Option<String>> selectScaleOptions(PageQuery pageQuery);

    /**
     * 根据量表分类分组
     * @param tblScale
     * @return
     */
    List<Map<String, List<Map<String, Object>>>> groupByCategory(TblScale tblScale);

    TblScale getForm(String id);

    /**
     * 校验量表名称是否唯一
     * @param scale
     * @return  true:唯一 false：已存在
     */
    boolean checkGaugeNameUnique(TblScale scale);

    /**
     * 逻辑删除,并添加回收站记录
     */
    int logicDelete(@NotBlank(message = "量表id不能为空") String id);

    /**
     * 二维码路径
     * @param id
     * @return
     */
    String qrCode(String id);

}
